Translation lookaside buffer switch bank

ABSTRACT

Example devices are disclosed. For example, a device may include a processor, a plurality of translation lookaside buffers, a plurality of switches, and a memory management unit. Each of the translation lookaside buffers may be assigned to a different process of the processor, each of the plurality of switches may include a register for storing a different process identifier, and each of the plurality of switches may be associated with a different one of the translation lookaside buffer buffers. The memory management unit may be for receiving a virtual memory address and a process identifier from the processor and forwarding the process identifier to the plurality of switches. Each of the plurality of switches may be for connecting the memory management unit to a translation associated with the switch when there is a match between the process identifier and the different process identifier stored by the register of the switch.

This application is a continuation of U.S. patent application Ser. No.15/888,961, filed Feb. 5, 2018, now U.S. patent Ser. No. 10/019,379,which is a continuation of U.S. patent application Ser. No. 15/097,612,filed Apr. 13, 2016, now U.S. Pat. No. 9,886,393, all of which areherein incorporated by reference in its entirety.

The present disclosure relates generally to mapping virtual memoryaddresses to physical memory addresses, and more particularly toarchitectures where a plurality of translation lookaside buffers may beassigned to processes of a processor and where the processor may beconnected to one of the plurality of translation lookaside buffers via aswitch of a switch bank.

BACKGROUND

When computer processors are operating out of a virtual memory, virtualmemory addresses (VMAs) are mapped to physical memory addresses (PMAs)to enable memory operations to be performed on a main (physical) memory.A page table may be stored in a known portion of the physical memory andmay contain entries mapping VMAs to PMAs for the various processesrunning on the processor. The page table may store entries on a per-pagebasis, e.g., in 4 KB pages. However, since accessing the page table canstill be time consuming, a computing device may include a translationlookaside buffer (TLB) that is closer to the processor than the mainmemory and comprises a smaller cache to store entries mapping the VMAsto PMAs for a number of memory pages. For example, a memory managementunit (MMU) may handle memory access requests for a processor, and mayfirst search the TLB for an entry mapping a VMA to a PMA for a memoryaccess request before searching the page table, which may be referred toas a “page walk.” The size of the TLB may be selected based upon atradeoff between how much memory can be simultaneously mapped in the TLBand how long it takes to scan the TLB. For example, TLBs are oftenbetween 64-4096 entries, with a typical TLB size of 256 entries, whichcorresponds to only 1 MB of virtual memory when utilizing a page size of4 KB.

SUMMARY

In one example, the present disclosure discloses a device. For example,the device may include a processor, a plurality of translation lookasidebuffers, a plurality of switches, and a memory management unit. Each ofthe translation lookaside buffers may be assigned to a different processof the processor, each of the plurality of switches may include aregister for storing a different process identifier, and each of theplurality of switches may be associated with a different one of thetranslation lookaside buffer buffers. The memory management unit may befor receiving a virtual memory address and a process identifier from theprocessor and forwarding the process identifier to the plurality ofswitches. Each of the plurality of switches may be for connecting thememory management unit to a translation lookaside buffer associated withthe switch when there is a match between the process identifier and thedifferent process identifier stored by the register of the switch.

In another example, the present disclosure discloses a memory managementunit and a method performed by a memory management unit. For instance,the method may include a memory management unit receiving a virtualmemory address and a process identifier from a processor, e.g., from acentral processing unit, and forwarding the process identifier to aplurality of switches. In one example, each of the plurality of switchesmay include a register for storing a different process identifier, eachof the plurality of switches may be associated with a differenttranslation lookaside buffer of a plurality of translation lookasidebuffers assigned to the processor, each of the plurality of translationlookaside buffers may be assigned to a different process of theprocessor, and each of the plurality of switches may be for connectingthe memory management unit to a translation lookaside buffer of theplurality of translation lookaside buffers that is associated with theswitch when there is a match between the process identifier and thedifferent process identifier stored by the register of the switch. Themethod may further include the memory management unit, accessing one ofthe plurality of translation lookaside buffers when the memorymanagement unit is connected to the one of the plurality of translationlookaside buffers by one of the plurality of switches and searching foran entry that maps the virtual memory address to a physical memoryaddress in the one of the plurality of translation lookaside buffers.

BRIEF DESCRIPTION OF THE DRAWINGS

The teaching of the present disclosure can be readily understood byconsidering the following detailed description in conjunction with theaccompanying drawings, in which:

FIG. 1 illustrates an example device or system related to the presentdisclosure;

FIG. 2 illustrates a flowchart of an example method performed by amemory management unit in connection with a plurality of translationlookaside buffers and a plurality of switches, in accordance with thepresent disclosure;

FIG. 3 illustrates a flowchart of an additional example method performedby a memory management unit in connection with a plurality oftranslation lookaside buffers and a plurality of switches, in accordancewith the present disclosure; and

FIG. 4 illustrates an example high-level block diagram of a computerspecifically programmed to perform the steps, functions, blocks, and/oroperations described herein.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe figures.

DETAILED DESCRIPTION

When using virtual memory, a limiting factor to CPU/core processingspeed is the dynamic mapping of virtual memory addresses (VMA) tophysical memory addresses (PMA) using a translation lookaside buffer(TLB). A typical TLB may map the virtual to physical addresses forbetween 64 and 4096 memory pages generally containing 4 KB of content.However, when a single processor core (broadly, a “processor”) is usedby many different processes sequentially, each time a new process needsto use the processor, the TLB may need to be flushed and reloaded withthose pages needed for that process.

In accordance with the present disclosure, a plurality of TLBs isdeployed for each processing core, or processor. The plurality of TLBsmay be dynamically assigned to processes with high processorutilizations. An additional TLB is also deployed that remains availablefor new processes and low utilization processes that are not assigned adedicated TLB. In other words, the additional TLB is shared between allprocesses that are not assigned to one of the plurality of TLBs. In oneexample, a switch bank comprising a plurality of switches may bedeployed between the processor and the plurality of TLBs. Each switchmay be paired with one of the plurality of TLBs and may comprise aregister to store a process identifier (ID) associated with a processthat has been assigned to a respective one of the plurality of TLBs. Ifa processor has a memory access task to perform for a particularprocess, it may submit a process ID and VMA to a memory management unit(MMU). The MMU may submit the process ID to the plurality of switches.The process ID may then be compared to the process IDs stored in eachregister of each switch simultaneously. If there is a match in anyregister, a hardware connection may be made between the MMU and the TLBvia the switch containing the matching register.

In one example, an open collector line may tie together the outputs ofthe plurality of switches and may control an additional switch that ispaired with the additional/shared TLB. The open collector line may floathigh, but if any of the switches matches the process ID, it may pull theopen collector line low, opening the additional switch and blocking aconnection to the additional/shared TLB. However, when the processor hasa task to perform for a process without its own dedicated TLB, the opencollector line may continue to float high and thereby maintain theadditional switch in a closed state, providing a connection between theMMU and the additional/shared TLB.

In one example, the memory utilizations associated with each process (orprocess ID) is tracked. If there is a change in the processes having thegreatest utilizations over a given time period, one or more of theprocess IDs in one or more of the registers in the plurality of switchesmay be substituted for a different process ID of a new high-utilizationprocess or a process that may have an increased memory utilization. Inone example, 4-5 switches may be provided to support 4-5 dedicated TLBs.For instance, in a personal computer, there may be 4-5 applications thattypically have high memory utilizations, while there may be many moreprocesses, e.g., greater than 30, that have infrequent and/or low volumememory utilizations. Thus, the ongoing flushing of a single shared TLBto support these less intensive processes may be avoided through the useof a plurality of TLBs that may be assigned to different processes.These and other aspects of the present disclosure are discussed ingreater detail below in connection with the examples of FIGS. 1-4.

To aid in understanding the present disclosure, FIG. 1 illustrates ablock diagram depicting one example of a system, or computing device 100suitable for performing or enabling the steps, functions, operationsand/or features described herein. As illustrated in FIG. 1, computingdevice 100 may comprise a central processing unit (CPU) 101 including aplurality of cores or processors, e.g., processors 110, 160, and 170.Computing device 100 may also include a plurality of switch banks, e.g.,TLB switch banks 120, 162, and 172, and a plurality of TLB sets, e.g.,TLB set 130, TLB set 163, and TLB set 173. For ease of illustration,only details of TLB switch bank 120 and TLB set 130 are depicted inFIG. 1. A memory management unit (MMU) is provided for each processor,e.g., MMUs 111, 161, and 171. As illustrated in FIG. 1, MMUs 111, 161,and 171 may be integrated with the respective processors, and/or may bebuilt upon a same die or chip as the processors 110, 160, and 170.However, in another example, MMUs 111, 161, and 171 may be connected tothe respective processors via a bus. In one example, each of MMUs 111,161, and 171 may comprise an application specific integrated circuit(ASIC), a programmable read only memory (PROM), a programmable logicdevice (PLD), such as a programmable gate array (PGA), and so forth.

In one example, MMU 111 is connected via links 150 to a plurality ofswitches, e.g., switches 121, 122, and 123. As mentioned above, eachswitch may each include a register for storing a different process ID ofa process that is assigned to a TLB that is paired with the switch. Forinstance, switches 121, 122, and 123 are paired with TLBs 131, 132, and133, respectively, in TLB set 130. To illustrate, when processor 110 hasa memory access task to perform, the processor may submit a memoryaccess request along with a process ID and virtual memory address (VMA)to the MMU 111. Links 150 may be used by the MMU 111 to provide theprocess ID to each of the switches 121-123. If the process ID submittedby the MMU 111 over links 150 matches one of the different process IDsstored in a register of one of switches 121, 122, or 123, the matchingswitch may provide a hardware connection between the MMU 111 and a TLBassociated with the matching switch. For example, if the process IDsubmitted by MMU 111 matches a process ID stored in switch 122, theswitch 122 may provide a hardware connection between MMU 111 and TLB 132via links 140 and one of the links 145.

In one example, each of TLBs 131-133 may comprise a random access memory(RAM), such as static random access memory (SRAM), or the like. Asillustrated in FIG. 1, TLB switch bank 120, further includes anadditional switch 180 that is paired with an additional TLB 134 of TLBset 130. Additional TLB 134 may also comprise a SRAM, for example. Inone example, the additional TLB 134 is for storing entries mapping VMAsto PMAs for processes of the processor that are not assigned to one ofthe TLBs 131-133 and for which corresponding process IDs are not storedin one of the switches 121-123. An open collector line 185 may tietogether the outputs of the plurality of switches 121-123 and maycontrol the additional switch 180. The open collector line 185 may floathigh, but if any of the switches 121-123 matches the process ID, it maypull the open collector line 185 low, opening the additional switch 180and blocking a connection to the additional TLB 134 via link 149.However, when the processor 110 has a task to perform for a processwithout its own dedicated TLB (e.g., one of TLBs 131-133), the opencollector line 185 may continue to float high and thereby maintain theadditional switch 180 in a closed state, providing a connection betweenthe MMU 111 and the additional TLB 134 via links 140 and 149.

Once connected to one of the TLBs 131-133 or to the additional TLB 134,the MMU 111 may traverse the TLB to which the MMU 111 is connected. Forinstance, the entries in the TLB may be scanned for an entry thatmatches the VMA. If there is a match, the MMU 111 may retrieve the PMAassociated with the VMA from the entry. The MMU 111 may then use the PMAto search for an entry in a cache, e.g., a level 1 (L1) cache, a level 2(L2) cache, and so forth (represented by “other components” 190), and/orto access a physical memory (also represented by “other components” 190)using the PMA to locate the correct location in the physical memory(e.g., if there is no “cache hit”, or a “cache miss”). For instance thecache(s) may comprise physically indexed caches. On the other hand, ifthere is no matching entry for the VMA in the TLB to which the MMU 111is connected (e.g., a “TLB miss”), the MMU 111 may connect to a level 2(L2) TLB. For instance, “other components 190” may represent a L2 TLBthat may store a larger number of entries than additional TLB 134. Inone example, such an L2 TLB may be for processor 110/MMU 111. In anotherexample, such an L2 TLB may be shared among multiple processor/MMUs andmay contain entries mapping VMAs to PMAs for multiple processes onprocessors.

Alternatively, or in addition, the MMU 111 may perform a “page walk” byaccessing a page table stored in a designated portion of the physicalmemory and which contains a full set of VMA to PMA mappings for allprocesses. As referred to herein, the physical memory may alternativelybe referred to as a “memory device” or “main memory.” In one example,the MMU may perform a page walk after a TLB miss in an L2 TLB, or aftersearching one of TLBs 131-133 and/or additional TLB 134 if there is noL2 TLB. A page walk may involve the MMU 111 finding an entry thatmatches the VMA in the page table. In addition, when a matching entry isfound, the MMU 111 may also write the entry into an appropriate TLB, andthen re-search the TLB for the entry. For example, if processor 110 hasa memory access task to perform for a process that has been assigned toTLB 132, when the MMU 111 attempts to perform the task on behalf ofprocessor 110, the MMU 111 may be connected to TLB 132 via switch 122.If there is no matching entry for the VMA found in TLB 132, the MMU 111may perform a page walk in the physical memory, obtain an entry thatmaps the VMA to a PMA, and may then write the entry to the TLB 132. TheMMU 111 may then re-search TLB 132 to attempt to find a matching entryfor the VMA, which will then be found since the matching entry has justbeen written to TLB 132. The MMU 111 may then retrieve the PMA from thematching entry and use the PMA to search one or more caches and/or toaccess the physical memory.

In one example, the MMU 111 may also track memory utilizations ofdifferent processes that are running on processor 110. For instance, theMMU 111 may track the memory utilizations in order to rank the pluralityof processes based upon the respective memory utilizations. The rankingsmay be based upon a number of memory access requests, a number of readrequests, a number of write requests, a volume of memory accessed, e.g.,a number of kilobytes accessed, and so forth. In one example, the memoryutilizations may be with respect to a sliding time window. For instance,the rankings may be based upon the number of memory access requests inthe most recent 60 second interval, or the like. The MMU 111 may thenassign TLBs and switches to certain processes that have memoryutilization ranks that are above a threshold. For instance, in TLBswitch bank 120 and TLB set 130, there are three switches and threerespective TLBs that may be assigned/dedicated to processes that arerunning on processor 110. Thus, in one example, the three processes withthe highest/greatest/most memory utilizations may be assigned to TLBs131-133 and switches 121-123, while all other processes may share theadditional TLB 134, which may be accessed via the additional switch 180and lines 140 and 149. As the memory utilization rankings may change,the processes assigned to TLBs 131-133 and switches 121-123 may alsochange. Accordingly, the MMU 111 may overwrite the registers in switches121-123 with process IDs of new/different processes. The MMU 111 mayalso flush the TLBs 131-133 and write new entries to the TLBs for thenew processes that may be assigned to the TLBs 131-133.

It should be noted that the system 100 has been simplified. In otherwords, the system 100 may be implemented in a different form than thatillustrated in FIG. 1. For example, the system 100 may be expanded toinclude other components (not shown) such as a number of additionalcores, TLB switch banks, TLB sets, and so forth, or additional TLBs perTLB set, without altering the scope of the present disclosure.Similarly, system 100 may omit various elements, substitute elements forcomponents or devices that perform the same or similar functions and/orcombine elements that are illustrated as separate components. Forexample, one or more of the processors in CPU 101 may not be providedwith a TLB switch bank and multiple TLBs. In another example, MMUs maycomprise separate components that are external to the CPU 101. Inanother example, additional TLB 143 may comprise a multi-level TLB,e.g., with an L1 TLB, an L2 TLB, and so forth. In still another example,the additional TLB 143 may be shared among a plurality of processors.For instance, processors 110, 160, and 170 may all utilize a sameshared/additional TLB. Thus, these and other modifications of the system100 are all contemplated within the scope of the present disclosure.

FIG. 2 illustrates a flowchart of an example method 200 performed by amemory management unit in connection with a plurality of translationlookaside buffers and a plurality of switches, in accordance with thepresent disclosure. In one example, the steps, functions, or operationsof method 200 may be performed by a computing device or system 400,and/or processor 402 as described in connection with FIG. 4 below. Forexample, the processor 402 and memory 404 may represent the hardwarelogic and a memory storing computer/hardware logic-executableinstructions of an example memory management unit, in accordance withthe present disclosure. For illustrative purposes, the method 200 isdescribed in greater detail below in connection with an exampleperformed by a memory management unit (MMU), such as MMU 111 in FIG. 1.The method begins in step 205 and proceeds to step 210.

At step 210, the MMU receives a virtual memory address (VMA) and athread or process identifier (ID) from a processor of a centralprocessing unit (CPU). For instance, the processor may have a memoryaccess task such as a memory read or a memory write to perform for aprocess.

At step 220, the MMU forwards the process ID to a plurality of switches.For example, the plurality of switches may be grouped in a switch bankassigned to the processor. Each of the switches may include a registerfor storing a different process ID and may be associated with arespective translation lookaside buffer (TLB) of a plurality of TLBsthat are assigned to the processor. In one example, each of theplurality of switches may compare the process ID forwarded by the MMU tothe process IDs stored in the register of each switch simultaneous withthe other switches/registers.

At step 230, if there is process ID match in one of the plurality ofswitches, the method may proceed to step 240. Otherwise, the method mayproceed to step 250.

At step 240, the MMU accesses a TLB associated with the matching switch.For example, a hardware connection may be made between the MMU and theTLB via the matching switch.

At step 250, the MMU accesses an additional/shared TLB via an additionalswitch controlled by an open collector line. For example, the opencollector line may tie together the outputs of the plurality of switchesand may control the additional switch that is paired with theadditional/shared TLB. When the process is not assigned a dedicated TLB,the process ID may not match any of the different process IDs stored inthe plurality of switches. Thus, the open collector line may continue tofloat high and thereby maintain the additional switch in a closed state,providing a connection between the MMU and the additional/shared TLB. Inone example, the additional/shared TLB is for storing entries mappingVMAs to PMAs for processes of the processor that are not assigned to oneof the plurality of TLBs available for dedicated assignments and forwhich corresponding process IDs are not stored in one of the pluralityof switches that are paired with the plurality of TLBs.

At step 260, the MMU may search for an entry that maps the VMA to aphysical memory address (PMA) in the TLB to which the MMU is connected.The MMU may be connected to a TLB that is dedicated to the processassociated with the process ID, or may be connected to anadditional/shared TLB if the process is not assigned its own dedicated,or non-shared TLB. In one example, step 260 may comprise scanningentries in the TLB searching for the VMA. The entries may pair VMAs withassociated respective PMAs. In the case where the MMU is accessing anadditional/shared TLB, the entries may also include a process ID. Forinstance, the additional/shared TLB may include entries mapping VMAs toPMAs for a number of processes. Therefore, the inclusion of the processID as an additional field in an entry enables the MMU to distinguish VMAto PMA mappings for different processes that are all sharing the TLB. Ifthere is a matching entry found in the TLB, the method 200 may proceedto step 270. Otherwise, the method 200 may proceed to step 280.

At step 270, the MMU retrieves a PMA associated with the VMA from theTLB when the matching entry is found.

At step 280, the MMU may perform an additional task, or tasks. Forinstance, if a matching entry was found and the PMA retrieved at step270, the MMU may search a memory cache for a matching entry using thePMA. For instance, the memory cache may be a physically indexed cache.In one example, the memory cache may comprises a plurality of levels. Ifa matching entry is found in the memory cache, the MMU may perform thememory access task with respect to the entry in the memory cache.However, if an entry is not found that matches the PMA in the memorycache, the MMU may then access a physical memory (broadly, a “memorydevice”) using the PMA to access the correct memory location and performthe memory access task. In one example, the MMU may also write an entryto the memory cache (e.g., on a memory page basis) after accessing thememory location in the physical memory and performing the memory task.

In another example, where there is no matching entry for the VMA in theTLB, the MMU may access a L2 TLB that may store a larger number ofentries. Alternatively, or in addition, the MMU may access a designatedlocation in the physical memory that stores a page table and perform apage walk to translate the VMA into a PMA. Once the PMA is obtained, theMMU may then access a memory cache and/or access the physical memoryusing the PMA. In still another example, the additional task(s) of step280 may include the MMU additionally performing the steps, functions,and/or operations of the method 300 of FIG. 3.

Following step 280, the method 200 may proceed to step 295. At step 295,the method 200 ends.

FIG. 3 illustrates a flowchart of an additional example method 300performed by a MMU in connection with a plurality of translationlookaside buffers and a plurality of switches, in accordance with thepresent disclosure. In one example, the steps, functions, or operationsof method 300 may be performed by a computing device or system 400,and/or processor 402 as described in connection with FIG. 4 below. Forexample, the processor 402 and memory 404 may represent the hardwarelogic and a memory storing computer/hardware logic-executableinstructions of an example MMU, in accordance with the presentdisclosure. For illustrative purposes, the method 300 is described ingreater detail below in connection with an example performed by a MMU,such as MMU 111 in FIG. 1. The method 300 begins in step 305 andproceeds to step 310.

At step 310, the MMU tracks memory utilizations of a plurality ofprocesses of a processor, where the plurality of processes includes afirst process.

At step 320, the MMU ranks the memory utilizations of the plurality ofprocesses. The rankings may be based upon a number of memory accessrequests, a number of read requests, a number of write requests, avolume of memory accessed, e.g., a number of kilobytes accessed, and soforth. In one example, the memory utilizations may be with respect to asliding time window. For instance, the rankings may be based upon thenumber of memory access requests in the most recent 60 second interval,or the like.

At step 330, the MMU may write a process ID of the first process to oneof a plurality of switches when a rank of a memory utilization of thefirst process is greater than a threshold rank corresponding to a numberof TLBs. For instance, if there are four TLBs available to aprocessor/MMU and three of the TLBs are available for assignment toparticular processes, then the threshold rank may be “third.” In otherwords, when the first process has one of the top three memoryutilizations of all processes running on the processor, the firstprocess may be assigned one of the three TLBs by writing the process IDof the first process to the switch associated with the TLB. In oneexample, the switch and the associated TLB may be selected to assign tothe first process based upon a different process previously assigned tothe switch and associated TLB falling below the threshold rank in thememory utilization rankings. For instance, the first process may be anew process and/or a process with an increasing memory utilization,whereas the other process previously assigned to the switch andassociated TLB may have finished or may have a declining memoryutilization. In another example, the assignment of certain processes todedicated TLBs may be based upon alternative or additional criteria suchas a designation of a process as a high priority process, a large numberof TLB misses and/or cache misses for the process, and so forth.

At step 340, the MMU searches the TLB associated with the one of theplurality of switches for an entry that matches a virtual memory address(VMA) associated with the first process. For instance, upon receiving anew memory access task for the first process from a processor, the MMUmay submit the process ID to a switch bank including the one of theplurality of switches. Since the one of the plurality of switchesincludes the process ID of the first process, there will be a match andthe MMU may be connected to the associated TLB which has been assignedto the first process.

At step 350, the MMU detects a TLB miss for the VMA. For example, if theTLB is newly assigned to the first process, there may be none or only afew VMA to PMA mapping entries for the first process contained in theTLB. Therefore, a TLB miss may be likely.

At step 360, the MMU may perform a page walk to find an entry thatmatches the VMA. For instance, the MMU may access a page table in adesignated portion of a physical memory (broadly a “memory device”) andtraverse the page table searching for an entry for the process ID whichmatches the VMA to a PMA of the physical memory.

At step 370, the MMU writes the entry that is retrieved from the pagetable to the TLB that is associated with the one of the plurality ofswitches.

At step 380, the MMU re-searches the TLB for the entry matching the VMAto a PMA. Since the MMU has retrieved the entry at step 360 and writtenthe entry to the TLB at step 370, at step 380, the entry may now befound by the MMU when searching the TLB.

Following step 380, the method 300 may proceed to step 395. At step 395,the method 300 ends.

It should be noted that although not specifically specified, one or moresteps, functions or operations of the respective methods 200 and 300 mayinclude a storing, displaying and/or outputting step as required for aparticular application. In other words, any data, records, fields,and/or intermediate results discussed in the respective methods can bestored, displayed and/or outputted to another device as required for aparticular application. Furthermore, steps or blocks in FIG. 2 or FIG. 3that recite a determining operation or involve a decision do notnecessarily require that both branches of the determining operation bepracticed. In other words, one of the branches of the determiningoperation can be deemed as an optional step. In addition, one or moresteps, blocks, functions, or operations of the above described methods200 and 300 may comprise optional steps, or can be combined, separated,and/or performed in a different order from that described above, withoutdeparting from the example embodiments of the present disclosure.

FIG. 4 depicts a high-level block diagram of a computing device suitablefor use in performing the functions described herein. As depicted inFIG. 4, the system 400 comprises one or more hardware processor elements402 (e.g., a central processing unit (CPU), a microprocessor, or amulti-core processor, hardware logic, and so forth), a memory 404 (e.g.,random access memory (RAM) and/or read only memory (ROM)), a module 405for memory management unit operations in connection with a plurality oftranslation lookaside buffers and a plurality of switches, and variousinput/output devices 406 (e.g., storage devices, including but notlimited to, a tape drive, a floppy drive, a hard disk drive or a compactdisk drive, a receiver, a transmitter, a speaker, a display, a speechsynthesizer, an output port, an input port and a user input device (suchas a keyboard, a keypad, a mouse, a microphone and the like)). Althoughonly one processor element is shown, it should be noted that thecomputing device may employ a plurality of processor elements.Furthermore, although only one computing device is shown in the figure,if the method 200 or the method 300 as discussed above is implemented ina distributed or parallel manner for a particular illustrative example,i.e., the steps of the above method 200 or method 300, or the entiremethod 200 or method 300 is implemented across multiple or parallelcomputing devices, then the computing device of this figure is intendedto represent each of those multiple computing devices.

Furthermore, one or more hardware processors can be utilized insupporting a virtualized or shared computing environment. Thevirtualized computing environment may support one or more virtualmachines representing computers, servers, or other computing devices. Insuch virtualized virtual machines, hardware components such as hardwareprocessors and computer-readable storage devices may be virtualized orlogically represented.

It should be noted that the present disclosure can be implemented insoftware and/or in a combination of software and hardware, e.g., usingapplication specific integrated circuits (ASIC), a programmable gatearray (PGA) including a Field PGA, or a state machine deployed on ahardware device, a computing device, or any other hardware equivalents,e.g., computer readable instructions pertaining to the methods discussedabove can be used to configure a hardware processor to perform thesteps, functions and/or operations of the above disclosed method 200 ormethod 300. In one example, hardware processor element 402 may functionas a memory management unit of the present disclosure when used inconjunction with computer/hardware logic-executable code orinstructions. For instance, instructions and data for the present moduleor process 405 for memory management unit operations in connection witha plurality of translation lookaside buffers and a plurality of switches(e.g., a software program comprising computer-executable instructions)can be loaded into memory 404 and executed by hardware processor element402 to implement the steps, functions or operations as discussed abovein connection with the illustrative method 200 or method 300.Furthermore, when a hardware processor executes instructions to perform“operations,” this could include the hardware processor performing theoperations directly and/or facilitating, directing, or cooperating withanother hardware device or component (e.g., a co-processor and the like)to perform the operations.

The processor executing the computer readable or software instructionsrelating to the above described method can be perceived as a programmedprocessor or a specialized processor. As such, the present module 405for memory management unit operations in connection with a plurality oftranslation lookaside buffers and a plurality of switches (includingassociated data structures) of the present disclosure can be stored on atangible or physical (broadly non-transitory) computer-readable storagedevice or medium, e.g., volatile memory, non-volatile memory, ROMmemory, RAM memory, magnetic or optical drive, device or diskette andthe like. Furthermore, a “tangible” computer-readable storage device ormedium comprises a physical device, a hardware device, or a device thatis discernible by the touch. More specifically, the computer-readablestorage device may comprise any physical devices that provide theability to store information such as data and/or instructions to beaccessed by a processor or a computing device such as a computer or anapplication server.

While various embodiments have been described above, it should beunderstood that they have been presented by way of example only, and nota limitation. Thus, the breadth and scope of a preferred embodimentshould not be limited by any of the above-described exemplaryembodiments, but should be defined only in accordance with the followingclaims and their equivalents.

What is claimed is:
 1. A device comprising: a processor; a plurality oftranslation lookaside buffers, wherein each of the plurality oftranslation lookaside buffers is to be assigned to a different processof a plurality of processes of the processor; a plurality of switches,wherein each of the plurality of switches comprises a register forstoring a different process identifier of a plurality of processidentifiers, wherein each of the plurality of switches is associatedwith a different translation lookaside buffer of the plurality oftranslation lookaside buffers; and a memory management unit for: rankingthe plurality of processes based on a memory utilization over a timeperiod; and assigning dynamically each one of the plurality oftranslation lookaside buffers to one or more of the plurality ofprocesses based on a rank of each the plurality of processes.
 2. Thedevice of claim 1, wherein the memory management unit is further for:accessing one of the plurality of translation lookaside buffers when thememory management unit is connected to the one of the plurality oftranslation lookaside buffers by one of the plurality of switches; andsearching for an entry that maps a virtual memory address to a physicalmemory address in the one of the plurality of translation lookasidebuffers.
 3. The device of claim 2, wherein the memory management unit isfurther for: retrieving the physical memory address, when the entry thatmaps the virtual memory address to the physical memory address is found;and accessing the physical memory address in a memory device.
 4. Thedevice of claim 2, wherein the memory management unit is further for:retrieving the physical memory address, when the entry that maps thevirtual memory address to the physical memory address is found; andsearching a memory cache for an entry associated with the physicalmemory address.
 5. The device of claim 2, wherein the memory managementunit is further for: accessing a level 2 translation lookaside buffer tofind the entry that maps the virtual memory address to the physicalmemory address, when the entry that maps the virtual memory address tothe physical memory address is not found in the one of the plurality oftranslation lookaside buffers.
 6. The device of claim 2, wherein thememory management unit is further for: performing a page walk in a pagetable stored in a memory device to find the entry that maps the virtualmemory address to the physical memory address, when the entry that mapsthe virtual memory address to the physical memory address is not foundin the one of the plurality of translation lookaside buffers.
 7. Thedevice of claim 1, further comprising: an open collector line coupled tothe plurality of switches; an additional switch controlled by the opencollector line; and an additional translation lookaside buffer, whereinthe additional switch is for connecting the memory management unit tothe additional translation lookaside buffer when a process identifierdoes not match any of a plurality of process identifiers stored in theplurality of switches.
 8. The device of claim 1, wherein each of theplurality of translation lookaside buffers comprises a static randomaccess memory for storing a plurality of entries mapping virtual memoryaddresses of a process of the plurality of processes to physical memoryaddresses of a memory device, wherein for each of the plurality oftranslation lookaside buffers, the process is associated with a processidentifier of a plurality of process identifiers that is stored in theswitch associated with the translation lookaside buffer.
 9. The deviceof claim 1, wherein the ranking comprises: tracking the memoryutilization of the plurality of processes; ranking the memoryutilization of the plurality of processes; and writing a subset ofprocess identifiers of a plurality of process identifiers to a subset ofregisters of the plurality of switches when the ranking of the memoryutilization of a corresponding subset of processes of the plurality ofprocesses is greater than a threshold.
 10. The device of claim 9,wherein the memory management unit is further for: searching thetranslation lookaside buffer associated with one of the plurality ofswitches for an entry that matches a virtual memory address associatedwith a first process; detecting a translation lookaside buffer miss forthe virtual memory address; performing a page walk in a page tablestored in a memory device to find the entry that matches the virtualmemory address associated with the first process; writing the entry thatmatches the virtual memory address associated with the first process tothe translation lookaside buffer that is associated with the one of theplurality of switches when the entry that matches the virtual memoryaddress associated with the first process is found during the page walk;and re-searching the translation lookaside buffer that is associatedwith the one of the plurality of switches for the entry that matches thevirtual memory address associated with the first process.
 11. A memorymanagement unit comprising: hardware logic; and a non-transitorycomputer-readable medium storing instructions which, when executed bythe hardware logic, cause the hardware logic to perform operations, theoperations comprising: ranking a plurality of processes based on amemory utilization over a time period; assigning dynamically each one ofa plurality of translation lookaside buffers to one or more of theplurality of processes based on a rank of each the plurality ofprocesses; accessing one of the plurality of translation lookasidebuffers when the memory management unit is connected to the one of theplurality of translation lookaside buffers by one of a plurality ofswitches; and searching for an entry that maps a virtual memory addressto a physical memory address in the one of the plurality of translationlookaside buffers.
 12. The memory management unit of claim 11, whereinthe operations further comprise: retrieving the physical memory address,when the entry that maps the virtual memory address to the physicalmemory address is found; and accessing the physical memory address in amemory device.
 13. The memory management unit of claim 11, wherein theoperations further comprise: retrieving the physical memory address,when the entry that maps the virtual memory address to the physicalmemory address is found; and searching a memory cache for an entryassociated with the physical memory address.
 14. The memory managementunit of claim 11, wherein the operations further comprise: accessing alevel 2 translation lookaside buffer to find the entry that maps thevirtual memory address to the physical memory address, when the entrythat maps the virtual memory address to the physical memory address isnot found in the one of the plurality of translation lookaside buffers.15. The memory management unit of claim 11, wherein the operationsfurther comprise: performing a page walk in a page table stored in amemory device to find the entry that maps the virtual memory address tothe physical memory address, when the entry that maps the virtual memoryaddress to the physical memory address is not found in the one of theplurality of translation lookaside buffers.
 16. The memory managementunit of claim 11, wherein an open collector line is coupled to theplurality of switches, wherein the open collector line controls anadditional switch for connecting the memory management unit to anadditional translation lookaside buffer when a process identifier doesnot match any of a plurality of process identifiers stored in theplurality of switches, wherein the operations further comprise:accessing the additional translation lookaside buffer when the memorymanagement unit is connected to the additional translation lookasidebuffer via the additional switch; and searching for the entry that mapsthe virtual memory address to the physical memory address in theadditional translation lookaside buffer.
 17. The memory management unitof claim 16, wherein the additional translation lookaside buffer is forstoring entries mapping virtual memory addresses to physical memoryaddresses for processes of the processor that are not assigned to one ofthe plurality of translation lookaside buffers and for whichcorresponding process identifiers are not stored in one of the pluralityof switches.
 18. The memory management unit of claim 11, wherein theranking comprises: tracking the memory utilization of the plurality ofprocesses; ranking the memory utilization of the plurality of processes;and writing a subset of process identifiers of a plurality of processidentifiers to a subset of registers of the plurality of switches whenthe ranking of the memory utilization of a corresponding subset ofprocesses of the plurality of processes is greater than a threshold. 19.The memory management unit of claim 18, wherein the operations furthercomprise: searching a translation lookaside buffer associated with oneof the plurality of switches for an entry that matches a virtual memoryaddress associated with a first process; detecting a translationlookaside buffer miss for the virtual memory address; performing a pagewalk in a page table stored in a memory device to find the entry thatmatches the virtual memory address associated with the first process;writing the entry that matches the virtual memory address associatedwith the first process to the translation lookaside buffer that isassociated with the one of the plurality of switches when the entry thatmatches the virtual memory address associated with the first process isfound during the page walk; and re-searching the translation lookasidebuffer associated with the one of the plurality of switches for theentry that matches the virtual memory address associated with the firstprocess.
 20. A method comprising: ranking, by a memory management unit,a plurality of processes based on a memory utilization over a timeperiod; assigning, by the memory management unit, dynamically each oneof a plurality of translation lookaside buffers to one or more of theplurality of processes based on a rank of each the plurality ofprocesses; accessing, by the memory management unit, one of theplurality of translation lookaside buffers when the memory managementunit is connected to the one of the plurality of translation lookasidebuffers by one of a plurality of switches; and searching, by the memorymanagement unit, for an entry that maps a virtual memory address to aphysical memory address in the one of the plurality of translationlookaside buffers.